//
// Created by hgx on 2021/12/24.
//

#ifndef UNTITLED_VEC_H
#define UNTITLED_VEC_H
#include <tuple>

namespace Component {
    struct /*compile-time attr*/ Vec {
        // default constructor
        Vec() : x{ 0.f }, y{ 0.f } {}
        // overload constructor
        // destructor
        ~Vec() {}

        [[not_serialize]] // non-value attr
        float x;
        [[info("hello"), maximum(10.f)]] // attr list
        float y;
        // static member variable
        inline static std::size_t num{ 0 };

        // non-static member function
        float Sum() const {
            return x + y;
        }

    };
}

// CMake will generate this file before building
// it contains the reflection declaration of Vec
#include "Vec.h.inl"
#endif //UNTITLED_VEC_H


